我有分寸

[译文] 使用加密工具提高系统安全性

gnawux cryptographysecuritytranslation

http://security.linux.com/article.pl?sid=07/01/31/1539208&from=rss
Thursday February 08, 2007 (03:01 PM GMT)
By: Rui Lopes

多 数情况下,诸如 SELinux, AppArmor, Bastille 以及 grsecurity 系统级的安全解决方案能够让你的 Linux 桌面系统相当地安全。不过,有些情况下,文件或是目录的加密还是必要的。当你需要把包含你的私人数据的文件通过可以动存储介质或是网络复制到其他什么地方 的时候,有些工具能得上忙的。
这些工具大部分是命令行方式工作的,不过,它们确实很简单,大部分患有命令行恐惧正的新手在经过一定的努力之后都能使用它们。所有这些工具都很小、需要极少的依赖库 (如果确实需要的话),可以说都是高度便携的。

Bcrypt

我 的 U 盘里总会放着一份 Bcrypt. 这是个极为简单易用的基本工具。一旦装上了 bcrypt, 你惟一要做的就是在命令行依次输入 bcrypt 和你要加密的文件名。之后,Bcrypt 会要求你提供一个密码,仅此而已。加密之后,Bcrypt 会给文件加上 .bfe 的扩展名。同样的命令也可以用于解密,bcrypt 仅仅通过文件的扩展名来决定是要加密还是解密。

Bcrypt 使用 Blowfish 。算法。密码通常要有 8 到 56 个字符,并被内部哈希为一个 448 位密钥以增强安全性。缺省条件下,加密文件的时候,原始文件将被删除并在原来存储文件的位置覆写 3 次,以避免通过反删除工具发现原始文件,你可以增加或减少重写的次数。

Bcrypt 缺乏灵活性和各种开关,所以可能不是你加密军火库中的首选武器,不过,简单是它的强项。根据 Bcrypt 的项目网站介绍,它可以用于 Linux 和 *BSD, 没有 Windows 版本; 不过,这个网站似乎有年头没更新过了。

Ncrypt

Ncrypt 是另一个简单的文件加密/解密程序。你可以选择三个 AES 加密标准候选加密算法: Rijndael, Twofish, 和 Serpent 中的任何一个。开发者特别注意了生成密码的安全性: 当一个文本密码被用于加密文件的时候,它首先被转换为 SHA-1 哈希值,而原文被立刻清除出内存。之后,这个哈希值被用于密钥,随后,也会被清除出内存。
Ncrypt 同时有 Unix 和 Windows 版本。它的用法很直接: 使用 ncrypt 命令,用开关选择加密算法,是要加密、解密、还是要清除文件,以及输入输出文件名。。原始文件将被从磁盘上彻底清除;Ncrypt 也有一个非常有用的文件清除功能,你可以用它安全删除文件。

Pad

与 Bcrypt 和 Ncrypt 不同,Pad 使用 on-time pad (OTP) 加密。一个文件会被分成两个乃至更多独立的"pads", 没一个都类似于白噪声。两个文件看起来只是混入了无害的随机数据,可以在用户喜欢的任何时候被重新组装起来。

OTP 有非常悠久的历史了。理论上讲,它是惟一真正不可破解的加密手段。不过,它有一些实际应用上的弱点: 每个 pad 尽可以被使用一次,而且必须是真正的随机数 (这实际上非常困难),并且它很容易受到中间人工具。这样,它不被推荐用于日常加密任务。不过,有一个场合下,OTP 被认为是有价值的: 自由语音加密。比如,如果有人希望自由分发一个机密文件,它可以将文件拆成不同的 pad,并将多个部分存放在不同的一同里,并告诉别人如何获取它们并组合成原始文件。(译注: 这段翻译的不怎么好,因为译者根本不懂什么是 OTP, 查了半天还是不怎么明白,欢迎解释。)

GnuPG

对于多数人来说,GnuPG 是开源文件加密的不二选择。一些发布版还把它随发布版预装。引用其 FAQ 中的原文,"GnuPG 代表 GNU 隐私卫士,是用于安全通信与数据存储的 GNU 工具。它可以被用于数据加密和创建数字签名。它包含一个先进的密钥管理工具并与 RFC 2440 所描述的 OpenPGP Internet 标准提案相兼容。因而,它的目标是兼容 NAI 公司的 PGP。."

Bcrypt, Ncrypt 和很多其它加密工具使用对称密钥加密文件。而 GnuPG 和 PGP 一样,使用公钥密钥加密,尽管它也支持对称加密。公钥加密使得加密和签名多个文件并和其他用户交换它们变得很容易。对于对称密钥和公钥密钥的综述以及它们 的工作机制,可以参考 GnuPG 手册的第二章和 FAQ 的 7.1 节。
GnuPG 可以独自地作为命令行工具使用,它有很多功能,并可以满足各种挑剔的用户。不过,它也有各种不错的前端工具可用。其中,我所用的是 KGpg, 集成在 KDE 之中,这方便了我很多日常加密工作。比如,其它我提到的加密工具只能加密文件,而不能加密目录。你可以用 KGpg 加密目录中的所有文件,或者创建一个 .tar.gz 或是 .zip 文件,并对它进行加密 。使用 KGpg, 我只要双击一个目录并告诉程序打包加密之即可。KGpg 也允许你在桌面创建一个碎纸机,用于安全删除你放在里面的文件 (而不是目录)。这非常方便,尽管我建议你阅读作者的关于破碎文件的安全说明。KGpg 的易用性非常优秀;即使对新手来说,学习曲线也非常短。
GnuPG 的开发步伐非常文鼎,而且支持多种操作系统。它在多种 Unix 系统上都可以编译,而且通过 Gpg4Win 提供了 Windows 移植版本。对于 Unix 系统的邮件加密的支持性也非常可靠: 查询 GnuPG FAQ 的 4.15 节,可以看到提供 GnuPG 集成的邮件客户端的列表 (很遗憾,支持 OpenPGP 标准的 Windows 客户端十分少见)。关于更多的邮件工具,可以看看 Aegypten 项目。

关于加密的更多信息,两个不错的起点是对应的 Wikipedia 文章和 Cryptography FAQ.
Rui Lopes 是一个葡萄牙网页设计师和独立纸片人,在技术领域有广泛兴趣。

gnawux
me!#$!@#$@#$wangxu!@#$%^&*()_me